package me.magicall.test.spring.bean;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;

public class BeanDefinitionRegistryPostProcessorImpl implements BeanDefinitionRegistryPostProcessor {

	@Override
	public void postProcessBeanDefinitionRegistry(final BeanDefinitionRegistry registry) throws BeansException {
//		System.out.println("@@@@@@" + registry.getBeanDefinitionCount());
//		final BeanDefinition beanDefinition = registry.getBeanDefinition("me.magicall.test.spring.bean.BeanDefinitionRegistryPostProcessorImpl#0");
//		System.out.println("@@@@@@" + beanDefinition.getBeanClassName());
//		System.out.println("@@@@@@" + beanDefinition.getDescription());
//		System.out.println("@@@@@@" + beanDefinition.getFactoryBeanName());
//		System.out.println("@@@@@@" + beanDefinition.getFactoryMethodName());
//		System.out.println("@@@@@@" + beanDefinition.getParentName());
//		System.out.println("@@@@@@" + beanDefinition.getResourceDescription());//class path resource [applicationContext.xml]
//		System.out.println("@@@@@@" + beanDefinition.getScope());
//		System.out.println("@@@@@@" + beanDefinition.getConstructorArgumentValues());
//		System.out.println("@@@@@@" + Arrays.toString(beanDefinition.getDependsOn()));
//		System.out.println("@@@@@@" + beanDefinition.getOriginatingBeanDefinition());
//		System.out.println("@@@@@@" + beanDefinition.getPropertyValues());
//		System.out.println("@@@@@@" + beanDefinition.getSource());
	}

	@Override
	public void postProcessBeanFactory(final ConfigurableListableBeanFactory beanFactory) throws BeansException {
		System.out.println("@@@@@@" + beanFactory);
	}

}
